﻿using HK.Editor.GUIEx.Protocol.Selection;
using UnityEditor;

namespace HK.Editor.Serializable.Protocol.Drawer
{
    /// <summary>
    /// 接口 : Drawer - ListView
    /// </summary>
    public interface IListViewDrawer : ISBodyDrawer
    {
        /// <summary>
        /// Element的Key Property
        /// </summary>
        string ElementKey { get; }
        
        /// <summary>
        /// Element可锁
        /// </summary>
        bool ElementLockable { get; }
        
        /// <summary>
        /// 是否为数组标志位
        /// </summary>
        bool IsArray { get; }
        
        /// <summary>
        /// 总个数
        /// </summary>
        int TotalSize { get; }
        
        /// <summary>
        /// 可见数量
        /// <para>* 分页的场合，为当前分页数量</para>
        /// </summary>
        int VisibleSize { get; }
        
        /// <summary>
        /// Footer可见标志位
        /// </summary>
        bool FooterVisible { get; }
        
        /// <summary>
        /// 列表Property
        /// </summary>
        SerializedProperty ListProperty { get; }

#region Options
        
        /// <summary>
        /// 可排序
        /// </summary>
        bool Sortable { get; }
		
        /// <summary>
        /// 可检索
        /// </summary>
        bool Searchable { get; }
        
        /// <summary>
        /// 可分页
        /// </summary>
        bool Pageable { get; }

#endregion

#region Selection

        /// <summary>
        /// 列表选中情报
        /// </summary>
        IListSelection ListSelection { get; }
        
        /// <summary>
        /// 列表Element选中回调
        /// </summary>
        ListElementSelected<SerializedProperty> ElementSelected { get; }

#endregion

#region Pagination

#endregion

    }
}
